package com.qc.sys.controller;


import com.baomidou.mybatisplus.extension.api.ApiController;
import com.qc.sys.common.Constant;
import com.qc.sys.common.DataGridView;
import com.qc.sys.common.ResultObj;
import com.qc.sys.entity.SysRole;
import com.qc.sys.service.SysRoleService;
import com.qc.sys.vo.RoleVo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.List;

/**
 * (SysRole)表控制层
 *
 * @author AltmanQccc
 * @since 2020-09-02 10:55:33
 */
@RestController
@RequestMapping("role")
public class SysRoleController extends ApiController {
    /**
     * 服务对象
     */
    @Resource
    private SysRoleService sysRoleService;


    /**
     * 查询角色
     * @param roleVo
     * @return
     */
    @GetMapping("loadAllRole")
    public Object loadAllRole(RoleVo roleVo){
        return this.sysRoleService.queryAllRole(roleVo);
    }

    /**
     * 查询角色
     * @param roleVo
     * @return
     */
    @GetMapping("loadAllAvailableRoleNoPage")
    public Object loadAllAvailableRoleNoPage(RoleVo roleVo){
        roleVo.setAvailable(Constant.USER_AVAILABLE_TRUE);
        return this.sysRoleService.queryAllAvailableRoleNoPage(roleVo);
    }


    /**
     * 添加角色
     * */
    @PostMapping("addRole")
    public ResultObj addRole(SysRole role){
        return this.sysRoleService.InsertRole(role);
    }

    /**
     * 修改角色
     * */
    @PostMapping("updateRole")
    public ResultObj updateRole(SysRole role){
        return this.sysRoleService.UpdateRole(role);
    }

    /**
     * 删除角色
     * */
    @PostMapping("deleteRole")
    public ResultObj deleteRole(Integer id){
        try {
            this.sysRoleService.removeById(id);
            return ResultObj.DELETE_SUCCESS;
        } catch (Exception e) {
            e.printStackTrace();
            return ResultObj.DELETE_ERROR;
        }
    }

    /**
     * 根据角色id查询权限
     * */
    @GetMapping("queryMenuIdsByRid")
    public Object queryMenuIdsByRid(Integer id){
        List<Integer> menuIdsByRid =this.sysRoleService.queryMenuIdsByRid(id);
        return new DataGridView(menuIdsByRid);
    }

    /**
     * 保存角色和权限之间的关系
     * */
    @PostMapping("saveRoleMenu")
    public ResultObj saveRoleMenu(Integer rid,Integer[] mids){
        try {
            this.sysRoleService.saveRoleMenu(rid,mids);
            return ResultObj.DISPATCH_SUCCESS;
        } catch (Exception e) {
            e.printStackTrace();
            return ResultObj.DISPATCH_ERROR;
        }
    }

}